/**
 *  \file StmtList.h
 *
 *  Created on: Mar 21, 2011
 *      Author: calle
 */

#ifndef STMTLIST_H_
#define STMTLIST_H_
#include <list>
#include <AbsSyn/IStmtVisitable.h>
#include <AbsSyn/AbsSyn.h>


/**
 * \defgroup AbsSyn Abstract Syntax tree classes
 */

class IStmtVisitor;
class IStmt;
/**
 * \class StmtList StmtList.h <AbsSyn/StmtList.h>
 *
 * @brief A program consists of statement lists.
 * this is what it all boils down to.
 *
 * \ingroup AbsSyn
 *
 * \todo Fix the list
 */


class StmtList : public IStmtVisitable {
public:
	typedef std::list< IStmt* > LIST_OF_STMTS; /**< List of statement type*/

	StmtList();
	virtual ~StmtList();
	/**
	 * @brief accept implements visitor interface
	 * @param v IVisitor implementor
	 *
	 * Accepts a visitor.
	 */
	virtual void accept(IStmtVisitor *v);
private:
	LIST_OF_STMTS m_StmList; /**< Statements list */
};

#endif /* STMTLIST_H_ */
